package br.com.calculadora.formula.calcular;

import android.util.Log;

public class CalcularDeslocamento extends CalcularAbstract {

	private final String TAG = CalcularDeslocamento.class.getSimpleName();

	// S = S0 + V * T (Acha o final)
	public Double calcularDeslocamento1(){
		Double resultadoFinal = Double.parseDouble(bean.getDeslocamentoInicial()) + (Double.parseDouble(bean.getVelocidadeFinal()) * Double.parseDouble(bean.getTempo()));
		this.armazenarValor(resultadoFinal, "S = S0 + V * T");
		return resultadoFinal;
	}
	
	// S = S0 + V * T (Acha o inicial)
	public Double calcularDeslocamento3() {
		double resultadoFinal = Double.parseDouble(bean.getDeslocamentoFinal()) + (Double.parseDouble(bean.getVelocidadeFinal()) * Double.parseDouble(bean.getTempo()));
		this.armazenarValor(resultadoFinal, "S = S0 + V * T");
		return resultadoFinal;
	}
	
	// S = VM * T
	public Double calcularDeslocamento2(){
		Double resultadoFinal = Double.parseDouble(bean.getVelocidadeMedia()) * Double.parseDouble(bean.getTempo());
		this.armazenarValor(resultadoFinal, "S = VM * T");
		return resultadoFinal;
	}
	
	//  V^V = V0^V0 + 2 * A * S 
	public Double calcularDeslocamento4() {
		Double resultado1 = Math.pow(Double.parseDouble(bean.getVelocidadeFinal()), 2) - Math.pow(Double.parseDouble(bean.getVelocidadeInicial()), 2);
		Double resultado2 = Double.parseDouble(bean.getAceleracao()) * 2;
		Double resultadoFinal = resultado1 / resultado2;
		this.armazenarValor(resultadoFinal, "V^V = V0^V0 + 2 * A * S");
		return resultadoFinal;
	}
	
	// S = S0 + V0 * T + (A * T * T) / 2 (Acha o deslocamento final)
	public Double calcularDeslocamento5() {
		Double resultado1 = (Math.pow(Double.parseDouble(bean.getTempo()), 2) * Double.parseDouble(bean.getAceleracao())) / 2; // (A * T * T) / 2
		Double resultado2 = Double.parseDouble(bean.getVelocidadeInicial()) * Double.parseDouble(bean.getTempo());
		Double resultadoFinal = Double.parseDouble(bean.getDeslocamentoInicial()) + resultado2 + resultado1;
		this.armazenarValor(resultadoFinal, "V^V = V0^V0 + 2 * A * S");
		return resultadoFinal;
	}
	
	// S = S0 + V0 * T + (A * T * T) / 2 (Acha o descolamento inicial)
	public Double calcularDeslocamento6() {
		Double resultado1 = (Math.pow(Double.parseDouble(bean.getTempo()), 2) * Double.parseDouble(bean.getAceleracao())) / 2; // (A * T * T) / 2
		Double resultado2 = Double.parseDouble(bean.getVelocidadeFinal()) * Double.parseDouble(bean.getTempo()) + resultado1; // V0 * T + (A * T * T) / 2
		Double resultadoFinal = resultado2 - Double.parseDouble(bean.getDeslocamentoFinal());
		this.armazenarValor(resultadoFinal, "V^V = V0^V0 + 2 * A * S");
		Log.i(TAG, "Calcular deslocamento: ");
		return resultadoFinal;
	}
	
	@Override
	public void armazenarValor(double resultadoFinal, String txtFormula) {
		bean.setDeslocamento(String.valueOf(resultadoFinal));
		Log.i(TAG, "Calcular deslocamento: " + txtFormula);
	}
}
